package com.wxy.demo.design_pattern.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 抽象主题
 * </p>
 *
 * @author e-Xiaoyuan.Wang
 * @since 2022/9/8 9:38
 */
public class Subject {

    //观察者数组
    private final List<Observer> observers = new ArrayList<>();

    //增加一个观察者，相当于观察者注册
    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    //删除一个观察者
    public void deleteObserver(Observer observer) {
        observers.remove(observer);
    }

    //通知所有观察者，主题有变化时通知观察者
    public void notifyObserver() {
        for (Observer observer : observers) {
            observer.response();
        }
    }

}
